import {
    HTTP_REQUEST_URL,
    CACHE_USERINFO,
    CACHE_TOKEN,
    CACHE_EXPIRES_TIME
} from './config.js';
import Server from './utils/Server.js';
import util from './utils/util.js';

App({
    
    onLaunch: function (option) {
        let that = this;
        let token = wx.getStorageSync(CACHE_TOKEN);
        let expiresTime = wx.getStorageSync(CACHE_EXPIRES_TIME);
        let userInfo = wx.getStorageSync(CACHE_USERINFO);
        this.globalData.isLog = !!userInfo && util.checkLogin(token, expiresTime, true);
        if (this.globalData.isLog) {
            this.globalData.token = token;
            this.globalData.expiresTime = expiresTime;
            this.globalData.userInfo = userInfo ? JSON.parse(userInfo) : {};
        }
        if (option.query.hasOwnProperty('scene')) {
            switch (option.scene) {
                //扫描小程序码
                case 1047:
                    that.globalData.code = option.query.scene;
                    break;
                    //长按图片识别小程序码
                case 1048:
                    that.globalData.code = option.query.scene;
                    break;
                    //手机相册选取小程序码
                case 1049:
                    that.globalData.code = option.query.scene;
                    break;
                    //直接进入小程序
                case 1001:
                    that.globalData.spid = option.query.scene;
                    break;
            }
        }
        // 获取导航高度；
        wx.getSystemInfo({
            success: res => {
                
                //导航高度
                // this.globalData.navHeight = res.statusBarHeight * (750 / res.windowWidth) + 97;
                let winWidth = res.windowWidth // 设备可使用窗口高度
                let statusBarHeight = res.statusBarHeight // 状态栏高度顶部安全距离
                this.globalData.winHeight = res.windowHeight
            },
            fail(err) {}
        });
        const updateManager = wx.getUpdateManager();

        updateManager.onCheckForUpdate(function (res) {
            // 请求完新版本信息的回调
        })

        updateManager.onUpdateReady(function () {
            wx.showModal({
                title: '更新提示',
                content: '新版本已经准备好，是否重启应用？',
                success: function (res) {
                    if (res.confirm) {
                        // 新的版本已经下载好，调用 applyUpdate 应用新版本并重启
                        updateManager.applyUpdate()
                    }
                }
            })
        });

        updateManager.onUpdateFailed(function () {
            return that.Tips({
                title: '新版本下载失败'
            });
        })
        //实例化聊天服务
        this.$chat = new Server(this);
    },
    $chat: null,
    globalData: {
        historylist: {},
        navHeight: 0,
        winHeight: 0,
        routineStyle: '#ffffff',
        openPages: '',
        img:'1',
        spid: 0,
        code: 0,
        urlImages: '',
        url: HTTP_REQUEST_URL,
        token: '',
        isLog: false,
        expiresTime: 0,
        MyMenus: [],
        userInfo: {},
        loginType: 'routine',
        http:'https://static.chonglaoban.cn'
    },
    /**
     * 聊天事件快捷注册
     * 
     */
    $on: function (name, action) {
        this.$chat.$on(name, action);
    },
    /**
     * 全局显示底部tabBar导航
     */
    $showTab: function () {
        return setTimeout(() => {
            wx.showTabBar() // 显示底部导航
        }, 100)
    },
    /*
     * 信息提示 + 跳转
     * @param object opt {title:'提示语',icon:''} | url
     * @param object to_url 跳转url 有5种跳转方式 {tab:1-5,url:跳转地址}
     */
    Tips: function (opt, to_url) {
        return util.Tips(opt, to_url);
    },
    /**
     * 全局配置实时倒计时函数方法
     * @param {*} date 
     */
    calcTimeFormat: function (date, state) {
        return util.downTimeFormat(date, state)
    },
    /**
     * 快捷调取助手函数
     */
    help: function () {
        return util.$h;
    },
    /*
     * 合并数组
     * @param array list 请求返回数据
     * @param array sp 原始数组
     * @return array
     */
    SplitArray: function (list, sp) {
        return util.SplitArray(list, sp)
    },
})